Method and system for performing diagnostics in a gateway device based on monitoring parameters

ABSTRACT

A gateway device includes a first communication system, a second communication system and a network processor. The first communication system and the network processor communicate first network signals therebetween. The first network signals comprising first higher priority network signals and first lower priority network signals. The second communicate system and the network processor communicating second network signals therebetween. The second network signals comprising second higher priority network signals and second lower priority network signals. The network processor communicates a first congestion notification request signal to the first communication system. The first communication system modifies the first lower priority network signals at the first communication system in response to the first congestion notification signal to form first modified network signals and communicates the first modified network signals from the gateway device.

CROSS-REFERENCE TO RELATED APPLICATIONS

This Application is a continuation of U.S. patent application Ser. No.16/774,811 filed on Jan. 28, 2020, which is a continuation of U.S.patent application Ser. No. 16/140,958 filed on Sep. 25, 2018 (now U.S.Pat. No. 10,554,561), which is a continuation of U.S. patent applicationSer. No. 14/871,864 filed on Sep. 30, 2015 (now U.S. Pat. No.10,142,240). The disclosures of the above applications are incorporatedherein by reference.

TECHNICAL BACKGROUND

The present disclosure relates generally to a system gateway and, morespecifically, to a method and system for performing diagnostics in thesystem gateway.

BACKGROUND

The statements in this section merely provide background informationrelated to the present disclosure and may not constitute prior art.

The typical home includes access to a wide area network through a modemand router. A typical home also includes access to televisionprogramming through satellite or cable systems. Satellite televisionproviders continually provide increasing amounts of content. Somecontent is available through the satellite, while other types of contentare provided through a wide area network under control of the satelliteprovider. The wide area network includes the internet. Content basedproviders also provide content to consumers directly through the widearea network. The content from the internet based provider is handledthrough the modem and router. The satellite system typically includes aplurality of set top boxes for receiving content. The set top boxes area separate system from the internet-based content providers. Consumersmust provide the means for obtaining access through the satellite orcable system as well as the router and modem. This increases the cost ofobtaining content for a consumer. The only interaction with such systemis when a set top box communicates through the local area network andthrough the wide area network to obtain or communicate informationtherethrough. Operationally, however, these systems are entirelyseparate. Consequently, the consumer has a potential to have multiplepoints of failure for the entire content set up.

Because the television system and wide area network or internet systemare separate, performance through the local area network to the widearea network is not controlled. The degradation of service may beevident in such instances. The amount of devices that access videocontent and other wide area network or internet content is increasing.Providing reliable access to all types of content, regardless of thesource, is a desirable goal for content providers.

SUMMARY

The present disclosure provides a gateway device that improves systemperformance by accessing diagnostics.

In one aspect of the disclosure, a method includes monitoring parametersof a gateway device, storing trends of parameters, when a diagnostic orself-healing method is not performed in response to trends ofparameters, determining a diagnostic time slot and performing thediagnostic or self-healing during the diagnostic time slot.

In a further aspect of the disclosure, a system includes an analysismodule monitoring parameters of a gateway device. The analysis modulestores trends of parameters. The analysis module determines a diagnostictime slot when a diagnostic or self-healing method is not performed inresponse to trends of parameters. The analysis module performs thediagnostic or self-healing during the diagnostic time slot.

Further areas of applicability will become apparent from the descriptionprovided herein. It should be understood that the description andspecific examples are intended for purposes of illustration only and arenot intended to limit the scope of the present disclosure.

DRAWINGS

The drawings described herein are for illustration purposes only and arenot intended to limit the scope of the present disclosure in any way.

FIG. 1 is a high level block diagrammatic view of a satellitecommunication system including a gateway device.

FIG. 2 is a block diagrammatic view of a client device that is incommunication with the gateway device.

FIG. 3 is a block diagrammatic view of a head end.

FIG. 4 is a block diagrammatic view of a gateway device according to thepresent disclosure.

FIG. 5 is a block diagrammatic view of a media processor in relation toa network processor, both of which reside in the gateway device.

FIG. 6 is a flowchart of a method for enabling communication moduleswithin the gateway device.

FIG. 7 is a flowchart for a method of using an external device toprovide access to a wide area network.

FIG. 8 is a block diagrammatic view of the aggregation andtransformation module.

FIG. 9 is a flowchart of a method of reserving bandwidth within thegateway device.

FIG. 10 is a diagrammatic view of a service request message.

FIG. 11 is block diagrammatic view of a router relative to a mediaprocessor.

FIG. 12 is call flowchart of the interaction between the router and themedia processor.

FIG. 13 is a block diagrammatic view of a cache module.

FIG. 14 is a flowchart of a method for obtaining contentrecommendations.

FIG. 15 is a flowchart of a method for generating profiles that are usedfor generating content recommendations.

FIG. 16 is a screen display of cached advertising relative to a websitedisplay.

FIG. 17 is a diagrammatic view of a video signal having an insertedcommercial advertisement therein.

FIG. 18 is a screen display illustrating content recommendations.

FIG. 19 is a screen display illustrating movie recommendations.

FIG. 20 is a detailed diagrammatic view of the connection bus between amedia processor and a network processor.

FIG. 21 is a flowchart of a method for resetting one processor fromanother processor.

FIG. 22 is a flow of a network processor and Wi-Fi processor.

FIG. 23 is a flowchart of a method for prioritizing streams.

FIG. 24 is a block diagrammatic view of the self-learning module of FIG.4 .

FIG. 25 is a graph of three different parameters being monitored at thegateway device.

FIG. 26 is a bar graph illustrating a peak use of network traffic.

FIG. 27 is a flowchart for a self-learning module.

FIG. 28 is a detailed view of the gateway device relative to a set topbox.

FIG. 29 is a flow identification of the quality of service for anon-deep packet inspection device such as the set top box.

FIG. 30 is a flowchart of a method for applying quality of service (QoS)to a flow signal in a non-deep packet inspection device such as a settop box.

FIG. 31 is a block diagrammatic view of a monitoring module relative tothe gateway device.

FIG. 32 is a flowchart of a method for obtaining data at the monitoringmodule.

FIG. 33 is a screen display illustrating visualization of hardwareaccelerated flows through the gateway device.

FIG. 34 is a screen display illustrating full views of accelerated andnetwork address translation (NAT) flow through the network processor.

FIG. 35 is a screen display illustrating the receiving and transmittingsignals of various devices visible on a user interface from theanalytical engine.

FIGS. 36A and 36B are data representations of trended data from anear-real time database.

DETAILED DESCRIPTION

The following description is merely exemplary in nature and is notintended to limit the present disclosure, application, or uses. Forpurposes of clarity, the same reference numbers will be used in thedrawings to identify similar elements. As used herein, the term modulerefers to an application specific integrated circuit (ASIC), anelectronic circuit, a general purpose computing device, a processor(shared, dedicated, or group) and memory that execute one or moresoftware or firmware programs, a combinational logic circuit, and/orother suitable components that provide the described functionality. Asused herein, the phrase “at least one of A, B, and C” should beconstrued to mean a logical (A or B or C), using a non-exclusive logicalOR. It should be understood that steps within a method may be executedin different order without altering the principles of the presentdisclosure.

The teachings of the present disclosure can be implemented in a systemfor communicating content to an end user or user device. Both the datasource and the user device may be formed using a general computingdevice having a memory or other data storage for incoming and outgoingdata. The memory may comprise but is not limited to a hard drive, FLASH,RAM, PROM, EEPROM, ROM phase-change memory or other discrete memorycomponents.

Each general purpose computing device may be implemented in electricalcircuitry, analog circuitry, digital circuitry, system on chips orcombinations thereof. Further, the computing device may include amicroprocessor (processor) or microcontroller that performs instructionsto carry out the steps performed by the various system components.

A content or service provider is also described. A content or serviceprovider is a provider of data to the end user. The service provider,for example, may provide data corresponding to the content such asmetadata as well as the actual content in a data stream or signal. Thecontent or service provider may include a general purpose computingdevice, communication components, network interfaces and otherassociated circuitry to allow communication with various other devicesin the system.

Further, while the following disclosure is made with respect to thedelivery of video (e.g., television (TV), movies, music videos, etc.),it should be understood that the systems and methods disclosed hereincould also be used for delivery of any media content type, for example,audio, music, data files, web pages, advertising, etc. Additionally,throughout this disclosure reference is made to data, content,information, programs, movie trailers, movies, advertising, assets,video data, etc., however, it will be readily apparent to persons ofordinary skill in the art that these terms are substantially equivalentin reference to the example systems and/or methods disclosed herein. Asused herein, the term “title” will be used to refer to, for example, amovie itself and not the name of the movie. As used herein, the term“content” will be used to refer to, for example, a movie or programitself. “Content identifier” refers to the data associated with contentused for identifying the content. Machines may use an actual numeric oralphanumeric value unique to the content. People may use a title foridentification. Various types of data may be associated with thecontent. For program guides and recommendations list contentidentifiers, a cluster identifier and other data may also be providedwith the content.

While the following disclosure is made with respect to example DIRECTV®broadcast services and systems, it should be understood that many otherdelivery systems are readily applicable to disclosed systems andmethods. Such systems include wireless terrestrial distribution systems,wired or cable distribution systems, cable television distributionsystems, Ultra High Frequency (UHF)/Very High Frequency (VHF) radiofrequency systems or other terrestrial broadcast systems (e.g.,Multi-channel Multi-point Distribution System (MMDS), Local Multi-pointDistribution System (LMDS), etc.), Internet-based distribution systems,cellular distribution systems, power-line broadcast systems, anypoint-to-point and/or multicast Internet Protocol (IP) delivery network,and fiber optic networks. Further, the different functions collectivelyallocated among a service provider and integrated receiver/decoders(IRDs) as described below can be reallocated as desired withoutdeparting from the intended scope of the present patent.

In the following examples, recommendations of titles of various programsare provided. The content recommendations may provide a title eithergraphically or alpha-numerically or a combination of both. Graphically,content posters or thumbnails may be provided. Several lists aregenerated, sorted and processed herein. The lists may include content orprogram titles or one or more alphanumeric identifiers or both. The listmay not contain the actual content itself.

Referring now to FIG. 1 , a satellite television broadcasting system 10is illustrated. The satellite television broadcast system 10 includes ahead end 12 that generates wireless signals 13 through an antenna 14which are received by an antenna 16 of a satellite 18. The wirelesssignals 13, for example, may be digital. The wireless signals 13 may bereferred to as an uplink signal. A transmitting antenna 20 generatesdownlink signals 26 that are directed to various receiving systemsincluding stationary systems such as those in the home, as well asmobile receiving systems. One example of a receiving unit is a set topbox. Another device is a gateway device 22. The gateway device 22 is incommunication with a respective antenna 24. Each antenna 24 receivesdownlink signals 26 from the transmitting antenna 20 of the satellite18. The gateway devices and set top boxes may be referred to assatellite television receiving devices.

The gateway device 22 may be connected within a building 28 such as ahouse, multi-dwelling unit or commercial building. A local area network30 may be used to connect gateway device 22 with client devices 32 andother IP devices such as mobile devices 34 and fixed devices 36. Thelocal area network 30 may be a wireless network or a wired network. Theinterconnection of the gateway device 22 with the client devices 32allow for multi-room viewing of content as well as coordinated contentrecording. The gateway device 22 may also be referred to as a serverdevice. The gateway device 22 may be used to distribute content,channels, programs and other data to each of the client devices 32.

Examples of a mobile device 34 include but are not limited to mobilephones, tablet devices and portable computers. Fixed devices 36 mayinclude desktop computers, video game systems, printers or other IPdevices that are not meant to be transported on a regular basis.

The gateway device 22 may also be in communication with a set top box38. The set top box 38 and the gateway device 22 may also be connectedthrough the local area network 30. Coordination of recordings may alsobe provided between the set top box 38 and the gateway device 22. Theset top box 38 may also include a DVR that communicates content to thegateway device 22. The gateway device 22 may also communicate content tothe set top box 38. The client device 32 may be connected to the gatewaydevice 22 through a DIRECTV® Ethernet to coaxial module DECA module 40.The DECA module 40 converts Ethernet content to content suitable forcommunication through a coaxial network. One or more of the clientdevices 32 may have a DECA module 40 associated therewith.

The local area network 30 may also have network area storage 42associated therewith. The network area storage (NAS) 42 may be used forstoring content and other data files from the mobile devices 34, thefixed devices 36 or from the gateway device 22. The network area storage42 may be accessible from one or more of the devices in communicationwith the local area network 30.

The gateway device 22 may also be in communication with the head end 12through a wide area network 50. The wide area network 50 may be one typeof network or multiple types of networks. The network 36 may, forexample, be a public switched telephone network, the internet, a mobiletelephone network or other type of network.

The gateway device 22, the client devices 32 and the set top box 38 mayall be in communication with a display 44 used for displaying content.Although a separate display is not illustrated for the mobile devices 34and the fixed devices 36, it is understood that displays may beincorporated into those devices as well. The displays 44 may be amonitor or television, or other screen device used for displayingcontent, program guides, descriptions, graphical user interfaces and thelike. The graphical user interfaces may be selected using the input 125.The input 125 may be a remote control or other pointing device used tomake a selection of choices set forth within a graphical user interface.

A cellular phone tower 52 is also illustrated. A cellular phone tower 52may provide access to a mobile telephone network and to the wide areanetwork 50. In the case where a gateway device 22 does not have accessto the wide area network through a service such as a digital subscriberline or cable modem, a mobile device 54 may be incorporated into thesystem. The mobile device 54 may receive signals from the gateway device22 that are intended for the wide area network 50 and communicate thesignals through the cellular tower 52 to the wide area network. Themobile device 54 may allow the head end 12 to communicate with thegateway device 22 directly. Examples of suitable uses for the gatewaydevice 22 to connect with the head end 12 may be for call back signalsthat are generated when ordering on-demand or pay-per-view content. Thegateway device 22 may also be in communication with the wireless areanetwork through the cellular tower 52 to provide various types ofinternet content, analytics and the like to and from the gateway device22.

The head end 12 may be in communication with an external content source60. The external content source 60 may contain a progressive downloadsource 62, a streaming source 64 and a broadband source. The contentsource 60 may provide content for distribution through the satellite 18to the gateway device 22. The external content source 60 may alsoprovide content to the gateway device 22 through the progressivedownload source 62 and the streaming source 64 through the wide areanetwork 50. The broadband source 66 communicates broadband content tothe gateway device 22. A cable television source 68 may also be coupledto the gateway device 22 directly through a cable or through the widearea network 50. The cable television source 68 provides cable contentto the head end 12 or to the gateway device 22 through a wired orwireless connection.

The system 10 may also include an analytics module 70 that includes acontent analytics module 72 and a cloud system function analytics module74. The content analytics module 72 may be used to analyze the contentbrowsed by devices connected to the gateway device 22. The contentanalytics module 72 may use intelligence to derive customer behavior andimprove targeting of customer needs in relation to content browsedthrough the gateway device 22. For example, the content analytics module72 may monitor third party video websites and keep track of contentwatched or browsed so that improved recommendations may be provided tocustomers when browsing through a user interface at the gateway device22. The content analytics provided by the content analytics module 72may also be used to adjust the advertisements provided to the gatewaydevice 22. A content analytics module 72 may also provide data so thatcontent relevant to the user is prepositioned at the gateway device 22.Details of the operation of the content analytics module 72 are providedbelow.

The cloud system function analytics module 74 provides an externalanalytical engine for analyzing data provided from the gateway device22. Data may be communicated to the cloud system function analyticsmodule 74 directly or indirectly from a monitoring module that may beinternal or external to the gateway device 22. The cloud system functionanalytics module 74 may act as a real-time monitoring module thatextracts low level information and stores it in a database. The cloudsystem function analytics module 74 may provide real-time visualizationof various parameters of operation of the gateway device 22. Theoperation of the cloud system function analytics module 74 will bedescribed in further detail below.

Referring now to FIG. 2 , the client device 32 is illustrated in furtherdetail. The client device 32 may include various component modules foruse within the local area network 30 and for displaying content signals.The display of content signals may take place by rendering signalsprovided from the network. It should be noted that the client device 32may comprise various different types of devices or may be incorporatedinto various types of devices. For example, the client device 32 may bea standalone device that is used to intercommunicate through a localarea network to the gateway device 22 illustrated in FIG. 1 .Communication to the gateway device 22 may be wired or wireless. Theclient device 32 may also be incorporated into various types of devicessuch as a television, a video gaming system, a hand-held device such asa phone or personal media player, a computer, or any other type ofdevice capable of being networked.

The client device 32 may include various component modules such as thoseillustrated below. It should be noted that some of the components may beoptional components depending on the desired capabilities of the clientdevice and the overall system. The client device 32 includes aninterface module 160. The interface module 160 may control communicationbetween the local area network and the client device 32. DigitalTransmission Content Protocol Volume 1 (DTCP) may be used to encrypt thecommunication signals between the gateway and client device as a form ofdigital rights management. As mentioned above, the client device 32 maybe integrated within various types of devices or may be a standalonedevice. The interface module 160 communicates with a rendering module162. The rendering module 162 receives formatted signals through thelocal area network that are to be displayed on the display. Therendering module 162 merely places pixels in locations as instructed bythe formatted signals. Rendering may also take place using vectorgraphics commands that instruct a group of pixels to be formed by theclient based on simple instructions. By not including a decoder, therendering module 162 will allow consistent customer experiences atvarious client devices. The rendering module 162 communicates renderedsignals to the display of the device or an external display. Therendered signals may include but are not limited to a program guide andguide banners or row ads associated therewith, a playlist, apay-per-view list, and a recommendations list. A recommendation list maycontain recommended programs or movies or both. Recommended lists mayalso include content or movies that are stored within the gateway device22.

A boot-up acquisition module 164 may provide signals through theinterface module 160 during boot-up of the client device 32. The boot-upacquisition module 164 may provide various data that is stored in memory166 through the interface module 160. The boot-up acquisition module 164may provide a make identifier, a model identifier, a hardware revisionidentifier, a major software revision, and a minor software revisionidentifier. Also, a download location for the server device to downloada boot image may also be provided. A unique client device identifier foreach client device may also be provided. The gateway device 22 mayreceive the client device identifier in communication signals from eachclient device. The client device identifier may be used in variouscommunications between the client device and the gateway device 22. Forexample, when requesting a playlist, a pay-per-view list, a set top boxguide, a movie list or recommendations, a listing request may come witha client device identifier so that the particular client device may beidentified by the gateway device 22. Also, when viewing requests, suchas channel tuning, content selection and the like are performed, theclient device identifier may be communicated from the client device. Thegateway device 22 may correlate the watched content and the clientdevice so that recommendations, ordered playlists, pay-per-view list,guide banners and movie recommendations may be personalized for thevarious client devices. The boot-up acquisition module 164 may obtaineach of the above-mentioned data from memory 166.

Communications may take place using HTTP client module 170. The HTTPclient module 170 may provide formatted HTTP signals to and from theinterface module 160.

A remote user interface module 172 allows client devices associated withthe client device 32 to communicate remote control commands and statusto the server device. The remote user interface module 172 may be incommunication with the receiving module 174. The receiving module 174may receive the signals from a remote control or input 125 through inputsignal 178 associated with the display and convert them to a form usableby the remote user interface module 172. The remote user interfacemodule 172 allows the server device to send graphics and audio and videoto provide a full featured user interface within the client. Screendisplays may be generated based on the signals from the server device.Thus, the remote user interface module 172 may also receive data throughthe interface module 160. It should be noted that modules such as therendering module 162 and the remote user interface module 172 maycommunicate and render both audio and visual signals. The receivingmodule 174 may receive input signals from the input 125. The input 125may be a visual input signal that may include, but is not limited to, agraphical input signal such as a stylus signal or a gesture signal, amouse signal, or a pointer signal.

The data received through the receiving module 174 may be communicateddirectly to the interface module 160 and ultimately the server devicewith very little processing because very little processing power may beincluded within a client device 32. The receiving module 174 may convertthe signals input into electrical signals for transmission orcommunication to the server device. For example, the raw voice signalsmay be communicated to the server device through the interface module160.

A clock 180 may communicate with various devices within the system sothat the signals and the communications between the server device andclient are synchronized and controlled.

Referring now to FIG. 3 , the head end 12 is illustrated in furtherdetail. The head end 12 may include a billing system 310. The billingsystem 310 may include various types of account information includingthe billing address, the subscriptions that the user subscribes to,authorizations, conditional access identifiers and the like. The billingsystem 310 is in communication with an authentication system 312. Theauthentication system 312 may authenticate devices that are incommunication with the head end 12, including the gateway device 22 andthe various user devices in communication with the head end through thewide area network. The authentication system 312 may also be incommunication with an encryption system 314 used to encrypt content.Various encryption keys may be used to encrypt content for particularusers. By encrypting content in the encryption system 314, content isprevented from use by unauthorized users. Encryption may take place forindividual content or may take place for broadcasted content used by aplurality of users. Authentication may take place in the authenticationsystem 312 by using a password or through a conditional access systemlocated in the individual devices. The conditional access system mayhave logic designed to decrypt the content.

The head end 12 may communicate content to the gateway device 22 of FIG.1 using a content module 330. The content module 330 may process thecontent into appropriate formats for broadcasting or point-to-pointdelivery. Transcoding, frequency translation, multiplexing andamplification may all be performed within the content module 330. Thetype of processing is at least in part based on the mechanism ofdelivery. Different versions of content may be housed in a contentrepository 332. The content source 60 may provide content to the contentmodule 330. Content may be provided in a tape or recordable disk as wellas through cable, RF or satellite.

An advanced program guide (APG) module 334 communicates program guidedata to various users of the system. For example, the APG module 334 maycommunicate guide date to the gateway device 22 of FIG. 1 through thesatellite 18. The content source 60 may provide guide data to the APGmodule 334. However, a separate data source 336 may also provide theadvance program guide module 334 with data. The data corresponding tocontent may include titles, posters, actor data, descriptions, parentalratings, user ratings, studio data, credits data, genre data, subgenredata, content type and the like.

The head end 12 may also include a recommendation authoring system 340.The recommendation authoring system 340 generates an externalrecommendation list that is ultimately communicated to the gatewaydevice 22. The external recommendation list may include recommendedcontent titles, related content to the recommended content and thestrength of similarity score between the related content and recommendedcontent. In this case both the recommended content and the relatedcontent refer to content titles for the specific programming. Theexternal recommendation list may include other types of metadata such asthe channel, actors, ratings, the start and end times, the date andinformation as to whether the content will be broadcasted at a differenttime. In the present example, the external recommendation list may bethe same for different gateway devices 22. As will be described belowthe external recommendation list may be communicated to and modified bythe gateway devices 22.

The recommendation authoring system 340 may be a combination ofautomated and operator controlled systems. The recommendation authoringsystem 340 may receive data from various sources including externalsources 342 and internal sources 344 available from within the head end12. The external sources may, for example, be provided from one or moreexperts, from Nielsen® ratings, Blue Fin®, or other external sources. Anexample of an internal source 344 is “What's Hot”, which is a list ofthe most watched and talked about programming available from the systemprovider associated with the head end 12. The internal source 344 mayalso be modified according to various marketing experts within the headend 12. The compilation of the external sources and internal sources maybe performed to obtain the external recommendation list. Both theexternal sources 342 and internal sources 344 may also generate therelated content list. The related content list may also have the sametype of metadata associated with the recommended content.

An analytics module 70′ may also be incorporated into the head end 12.The analytics module 70′ may perform the same functions as the analyticsmodule 70 illustrated in FIG. 1 . In FIG. 1 , the analytics module 70 isa separate web connected module. However, the analytics module 70′ maybe incorporated into the head end 12. The analytics module 70′ mayincorporate the functions of the content analytics module 72 and thecloud system function and the analytics module 74 described above. Theyhave not been illustrated as a separate device for simplicity in FIG. 3.

Referring now to FIG. 4 , a gateway device 22 is illustrated in furtherdetail. Although, a particular configuration of the gateway device 22 isillustrated, it is merely representative of various electronic deviceswith an internal controller used as a content receiving device. Theantenna 24 may be one of a number of different types of antennas thatincludes one or more low noise blocks. The antenna 24 may be a singleantenna 24 used for satellite television reception. The gateway device22 may be coupled to the display 44. The display 44 may have an outputdriver 412 within the gateway device 22.

The gateway device 22 may be headless so that it may be placed in anylocation throughout the home. That is, no direct connection to a displayor television is required.

A controller 410 is used to coordinate and control the various functionsof the gateway device 22. The controller 410 may be a one or moregeneral processors such as a microprocessor that cooperates with controlsoftware. In the present example, the controller comprises twoprocessors 410A and 4108. The processor 410A is a media processor module(media processor) and the processor 410B is a network processor module(network processor for short). The media processor 410A functionsinclude the functions of a front end 414. These functions may include atuner 414A, a demodulator 414B, a decoder 414C such as a forward errorcorrection decoder and any buffer or other functions. Specific functionsof the controller 410 are described in detail below. The processor 410Bmay be used to control the interfacing with various networks and act asa router and may also act as a modem.

The controller 410 may also include a viewer tracking module 416, abrowser tracking module 418 and a recommendation module 420. The viewertracking module 416 is used for tracking and logging viewing events atthe gateway device 22. Ultimately, the viewer history may be logged in aviewer tracking log as will be further described below. The viewertracking module 416 may track a time that content was watched, a clientdevice associated with the content, the title of the content and if thecontent belongs to a series. The browser tracking module 418 may trackbrowser activity data related to content viewed on websites through aweb browser. The browser activity data may include, but is not limitedto, video content viewed partially or in its entirety, content trailers,and data look-ups. The recommendation module 420 is used for generatingrecommendations corresponding to programs currently available forviewing corresponding to previously watched content and content relatedto browser activity during a particular time slot. The recommendationmodule 420 may also generate programs or recordings that are deemed tobe future or current programming that the viewer should like based on ananalysis of viewing habits of the viewer. The recommendations module 420may receive the external recommendations list which is coordinated orsupplanted by recommendations based on the viewer tracking data andbrowser tracking data.

In general, the tuner 414A receives the signal or data from theindividual channel. The tuner 414A may receive television programmingcontent, program guide data or other types of data. The demodulator 414Bdemodulates the signal or data to form a demodulated signal or data. Thedecoder 414C decodes the demodulated signal to form decoded data or adecoded signal. The controller 410 may be similar to that found incurrent DIRECTV® set top boxes which uses a chip-based multifunctionalcontroller. Although only one tuner 414A, one demodulator 414B and onedecoder 414C are illustrated, multiple tuners, demodulators and decodersmay be provided within a gateway device 22.

The controller 410 is in communication with a memory 430. The memory 430is illustrated as a single box with multiple boxes therein. The memory430 may actually be a plurality of different types of memory includingthe hard drive, a flash drive and various other types of memory. Thedifferent boxes represented in the memory 430 may be other types ofmemory or sections of different types of memory. The memory 430 may benon-volatile memory or volatile memory or combinations thereof.

The memory 430 may include storage for various operational datacollected during operation of the gateway device 22. One type of datastorage includes the viewer tracking log 432 obtained and controlled bythe viewer tracking module 416. The viewer tracking log (VTL) 432includes viewer tracking log data that includes data about details ofprograms that have been watched or played back, including what time thatthey were watched or played back. The data of the VTL 432 may alsoinclude how long they were watched and program details. The programdetails may include whether the program belongs to a series. Recordingdeletion data within a digital video recorder may also be included inthe data of the VTL 432.

The memory 430 may also include a browser tracking log 432B obtained andcontrolled by the browser tracking module 418. The browser tracking log432B includes browser tracking data that includes details of browseractivity that includes video content partially viewed or viewed in itsentirety, content trailers viewed and data lookups. The data in thebrowser activity may or may not relate directly to video contentactivity. The amount of time browsing various websites or watchingon-line content may also be tracked.

Another type of memory 430 is the settings and the list information(SLI) memory 434. The SLI memory 134 may store various types of dataincluding set top box playlist data 436 that has the playlist forcontent saved within the gateway device 22. The playlist data containscontent visible to users and content currently non-visible to users.Another type of data is the favorite settings for the gateway device 22.The favorites may be stored in a favorites memory 138. Other types ofdata may also be included in the SLI memory 434 which is illustrated asan “other” data memory 440. The other data memory 440 may includevarious types of data including ignored suggestions which correspond tosuggestion or recommendation suggestions that were ignored. Another typeof data in the other data memory 440 may include the channelsubscription data, the blocked channels, adult channels, rating limitsset by the gateway device 22, current set top box language, prioritizerdata, TV resolution data, to do list data, the conditional access moduleidentifier, and a request identifier. Further, time zone data, time ofday daylight savings, status data, aspect ratio data, viewing hoursdata, quick tune list and a zip code may all be included within theother memory 4140 of the SLI memory 434.

The memory 430 may also include advanced program guide memory 444. Theadvanced program guide (APG) memory 444 may store program guide datathat is received within the system. The program guide data may storevarious amounts of data including two or more weeks' worth of programguide data. The program guide data from the APG memory 444 may becommunicated in various manners including through the satellite 18 ofFIG. 1 . The program guide data may include a content or programidentifiers, and various data objects corresponding thereto. The contentidentifier may include series data. The first 4 digits may, for example,identify the series. The program guide may include programcharacteristics for each program content. The program characteristic mayinclude ratings, categories, actor, director, writer, content identifierand producer data. The data may also include various other settings.

The memory 430 may also include a digital video recorder 446. Thedigital video recorder 446 may be a hard drive, flash drive, or othermemory device. A record of the content stored in the digital videorecorder is a playlist. The playlist may be stored in the DVR 446 or aseparate memory as illustrated.

The memory 430 may also include a cache memory 448. The cache memory 448may be used to store cached content corresponding to web content underthe control of a cache module 450 that will be described further below.

The gateway device 22 may also include a user interface (UI) 456. Theuser interface 456 may be various types of user interfaces such as akeyboard, push buttons, a touch screen, a voice activated interface orthe like. The user interface 456 may be used to select a channel, selectvarious information, change the volume, change the display appearance,or other functions. The user interface 456 may also be used forselecting recommendation and providing feedback for recommendations. Theuser interface 456 may thus be used for generating a selection signal.

A network interface 458 may be included within the gateway device 22 tocommunicate various data through the local area network 30 and to andfrom the wide area network 50 illustrated above. The network interface458 may include various technologies used alone or in combination suchas Wi-Fi, WiMax, WiMax mobile, wireless, cellular, a cable modem, adigital subscriber line (DSL) modem or other types of communicationsystems. The network interface 458 may use various protocols forcommunication therethrough including, but not limited to, hypertexttransfer protocol (HTTP). The network interface 458 may also include aBluetooth® interface, a Zigbee® interface or other limited distance RFinterface for communicating with devices such as a mobile device.

The gateway device 22 provides two major functions. That is, the gatewaydevice 22 provides video service to the building illustrated in FIG. 1 .In the present example, satellite service is provided to the building28. However, cable and over-the-air video service may also becommunicated through the gateway device 22. The gateway 22 is also anaggregator of in-home IP networks and wide area networks. The IP networkaccess service provider may be the same service provider as thetelevision provider.

The network interface 458 provides a modem function that is typically aseparately provided function in typical home-based systems. The modemfunction provided within the network interface 458 may be provided inthe same housing as the gateway device. More than one type of modem maybe provided within the network interface 458. Although, not all of themodem functions may be operated. That is, when the user receives thegateway device 22, only the system's service providers subscribed to maybe provisioned or enabled. Advantageously, the gateway device 22 doesnot have to communicate through an external device. The gateway device22 controls the modem functions of the network interface 458 and thusthe gateway device 22 can communicate with the wide area network(internet). This reduces the amount of interfacing issues in dealingwith a third party modem device. A third party device does not have tobe purchased and thus the overall cost to the consumer may be reduced.As will be described below, troubleshooting and integration offunctionality provides a user of the gateway device 22 with a morereliable device with increased functionality incorporated therein.

The gateway device 22 may also include a clock 460. The clock 460 may beused to keep track of a current time. The current time may be used todetermine a current time slot as described below. The current time maybe used to identify the times at which video content or browser contentis being viewed. In a sense, the current time may be used as a timestamp for data corresponding to the use or watching of various browserand video content. The time may also be used in self-healing anddiagnostics to determine when certain gateway device parameters arebeing used.

The gateway device 22 includes an initialization module 464. Theinitialization module may be used for initially setting up the gatewaydevice and the operation of the specific network interfaces set forththerein. More than one type of modem may be incorporated into thenetwork interface 458. The initialization module 464 is used toinitialize one or more of the modems for communicating to the wide areanetwork. Further, the interoperability of the modem as well as a routerand the front end 414 is initialized in the initialization module 464.

The gateway device 22 may include an aggregation and transformationmodule 466. The aggregation and transformation module 466 aggregatescontent from broadband sources, video sources such as the satellite andother sources available through the wide area network. The aggregationand transformation module 466 transforms the content into formats thatare usable by the various devices connected to the local area network.

The gateway device 22 may also include a self-learning module 468. Theself-learning module 468 is used for self-healing and diagnostics. Theself-learning module 468 is a dynamic system that adapts to customerbehavior, learns their pattern of service usage, and performsself-healing and diagnostics actions using a dynamic feedback mechanism.

The gateway device 22 may also comprise an interaction flow module 470.The interaction flow module 470 performs a combination of functions atthe media processor and network processor that coordinates the functionsinternally. Ultimately, content arriving by way of the satellite andbroadband may be aggregated together. The interaction flow module 470allows the content to be processed so that the devices coupled to thegateway device 22 may consume the content received from the varioussources. The content may be conditioned for delivery within the homenetwork. “Flow” refers to signals flowing into, out of and through thegateway device 22. The flow signals comprise the various types ofcontent as described above.

Referring now to FIG. 5 , a block diagrammatic view of the gatewaydevice 22 is illustrated in further detail with functions of the mediaprocessor 410A and the network processor 410B having the functionalityblocks associated therewith. In this example, a media processor module510 includes the media processor 410A and the functions associatedtherewith. A network processor module 512 has the network processor 410Band the functions associated therewith. The network processor 512includes the functions of the network interface 458 of FIG. 4 in furtherdetail.

The media processor 410A has memory associated therewith. The memory isbroken out in further detail compared to that set forth in FIG. 4 . Inthis example, the DVR 446 is in communication with the media processor410A. The media processor 410A may also have flash memory 520 associatedtherewith. The flash memory 520 may be used for storage of criticaldata, files and images needed for robust operation upon start up. Thedata files and images are a bare minimum set of files required to bringthe system into a normal operational state. Dynamic software updates ofsoftware images may also be stored in first memory 520.

The media processor 410A may also be in communication with a double datarate (DDR) synchronous dynamic random-access memory 522. The DDR memory522 may be used for operating system execution as well as execution ofprograms and other executables.

The media processor 410A receives content from the front end 414. In thepresent example, a tuner, demodulator and decoder may be containedwithin the front end 414. Also in this example, satellite content isreceived by the front end 414. However, other types of over-the-air orcable-based content may be received.

A triplexer 524 may be incorporated into the media processor module 510.The triplexer 524 provides content from an external connection to thefront end 414. The triplexer 524 may also provide content to amultimedia over coaxial alliance format (MoCa®) module 530 locatedwithin the network processor module 512. A MoCA® module 530′ may belocated in the media processor as well. The MoCa® standard allowscoaxial cabling to enable whole-home distribution of high definitionvideo content. A MoCa® connection 532 may interconnect the triplexer 524and the MoCa® module 530.

The media processor 410A and the network processor 410B may beinterconnected using a connection bus 534. The bus 534 may be high speedor low speed or combinations of both. The Ethernet or gigabit mediaindependent interface is a high speed connection. The connection bus 534may be an Ethernet bus or a gigabit media independent interface. A lowspeed network connection may also be coupled between the media processor410A and the network process 410B. As will be described in more detailbelow, the low speed connection may comprise several lines. Of course,other types of formats may be used between the media processor 410A andthe network processor 410B.

The network processor module 512 includes a detailed view of the networkinterface 458. In this example, a network interface 540 may include afirst Wi-Fi module 540A, a second Wi-Fi module 540B, a cellular modem540C and a Bluetooth® module 540D. The Wi-Fi modules 540A and 540B mayprovide a plurality of connections outside of the network processormodule to other devices such as mobile devices and tablet computers. TheWi-Fi modules 540A and 540B may be separate so that differentcommunication frequencies may be used. The cellular modem 540C may be a3G/4G LTE cellular modem used to couple the network processor to acellular service provider so that a wide area network connection may beobtained.

The network interface 540A may also include a ZigBee® module 540E. TheZigBee module 540E may communicate and receive ZigBee® formatted signalto and from devices outside the gateway device 22.

The network interface 540A may also include a Remote Control Standardfor Consumer Electronics (RF4CE) interface 540F that may be used forremote controls. Network interface 540 may also include a digitalsubscriber line (DSL) interface 540G. The DSL interface 540G may be usedto provide two-way communication of the network processor module 512 anda digital subscriber line such as a telephone line.

The network interface 540 may also include a small form-factor pluggable(SFP) interface 540H. The SFP interface 540H may also be referred to asa mini-GBIC. The SFP interface 540H is an optical transceiver moduleused to interface with optical fibers to provide two-way communicationtherethrough. The SFP transceiver may support SONET/DSH Fast Ethernet,Gigabit Ethernet, Fiber Channel, and other communication standards.

The network processor 410B may communicate to the MoCa® module 512 andthe modules of the network interface 458 and are coupled through a layertwo switch 544. The layer two switch 544 may act as a router to routesignals to other devices connected to the layer two switch 544 withouthaving to involve the network processor 410B. This improves the overallflow. However, the layer two switch 544 may be incorporated functionallywithin the network processor 410B.

A router 546 within the network processor 410B is used to route signalsto the WAN from various devices such as the MoCa module 530 and thedevices of the network interface 458. The term router may be used forthe router 546 alone or in combination with the layer two switch 544.

The network processor 410B may also be in communication with a wiredmulti-port LAN module 550. By way of example, four ports areillustrated. A WAN module 552 may also be provided. The WAN module maybe a one-port gigabit WAN connection. The LAN module 550 allows directwired access to the network processor 410B. The WAN module 552 provideswired access to the internet through a wide area network connection.Both wired and wireless connections may be used.

The network processor module 512 may also have flash memory 554 that isused for storage of critical sellings, configuration and data forreliable bringing up of the system as well as storage of dynamicallyupdated software images and previous image rollback.

The network processor module 512 may also have DDR memory 556 that isused for operating system and program execution.

The media processor module 510 and the network processor module 512 mayeach have a power block 560 associated therewith. The power blocks 560may be an individual power supply or be a connector to a power supply ofthe gateway device 22. The power block 560 of the media processor modulemay be in communication with the power block 560 of the networkprocessor module through a power connector 562.

Referring now to FIG. 6 , a method for the startup of the gateway deviceis set forth. In step 610 the gateway device is started by providingpower or selecting a power or reset switch. In step 612 it is determinedwhether the gateway device has been provisioned. If the gateway devicehas not been provisioned, the gateway device is provisioned in step 614.By provisioning the gateway device, direct communication between thegateway device and the wide area network interface is established. Thedirect connection bypasses an external stand-alone modem. Communicationto the WAN may be performed directly through the wide area networkinterface. As is illustrated in FIG. 5 , a plurality of different typesof network interfaces may be provided within the gateway device. One ofthe network interfaces provides the wide area network interface of thegateway device. Provisioning the gateway device means selecting thedesired network interface for communication.

After step 610 and after step 614, step 616 begins the integrated modemstartup. Modem refers to one or more of the modules of the networkinterface. One or more of the devices in the network interface may beused in the gateway device. In step 618 it is determined whether themodem hardware module has been detected. If the modem hardware modulehas not been detected, the external modem is checked in step 620. Areport may be generated in step 622 so that the user may take action.

After step 618 when the hardware module of the modem has been detected,step 622 is performed. Step 622 enables the software module of themodem. Step 624 is performed after step 622 and determines whether themodem has been provisioned. If the modem has not been provisioned, step626 provisions the modem with the head end of the internet serviceprovider associated with the modem. After steps 626 and 624, step 628begins operation of the integrated modem because both the modem and theintegrated modem have been provisioned as described in the precedingsteps.

Referring now to FIG. 7 , a method for operating the gateway device witha mobile device 54 through a cell tower 52 that is connected to a widearea network 50 is set forth. In this example, it is presumed that awide area network interface is not incorporated into the gateway device22. The mobile device 54 is used for connecting the gateway deviceultimately to the wide area network 50 of FIG. 1 . In step 710 theBluetooth® or Wi-Fi is turned on at the mobile device 54. In step 712the gateway device pairs with the mobile device 54. This may beperformed in various methods depending upon the type of mobile device.Secret codes or passwords may be used to pair the mobile device with thegateway device. Ultimately, the phone and gateway device recognize eachother so that communication signals may be exchanged. Once paired withthe gateway device, the gateway device may perform an optional step ofrestricting the type of content or the timing of content using settings.The user, through a user interface, generates content settings or timingsettings to restrict the flow of content through the mobile device. Instep 716 commands are communicated to the wide area network, such as theinternet, from the gateway device through the mobile device. In step 718commands are communicated from the wide area network or internet to thegateway device through the mobile device. Steps 714 through 718 may beperformed continually until the gateway device is unpaired with themobile device. This unpairing may take place when the mobile deviceexceeds the maximum communication distance.

Step 720 monitors the heartbeat of the connection to determine if aconnection is still in place. In step 722, when the connection isactive, the gateway device and mobile device continue to use theconnection through the exchange of signals.

In step 722, when the connection is determined to be inactive by thelack of a “heartbeat” signal, step 726 generates a message at thedisplay of the screen device to notify the user that the system isdisconnected or in an error state. The system may take corrective actionwith or without user intervention.

It should be noted that in step 714 the timing may be restricted. Thatis, one variant of the method allows the use of a time restriction forrestricting use of the mobile device. For example, from 11pm to 4amevery day the gateway device may make use of the mobile device forcommunicating with the wide area network. The timing may be set innon-prime time hours so that it is less likely that the user is usingthe mobile device.

Referring now to FIG. 8 , the high level block diagrammatic view of theaggregation and transformation module 466 of FIG. 4 is set forth. Theaggregation and transformation module 466 is in communication with thesatellite 18 or a cable source through the front end 414 as describedabove in FIG. 4 . The aggregation and transformation module 466 is alsoin communication with a broadband source 66. An aggregation module 810obtains the content and allows the content to be transformed for usethroughout the local area network. A transcoder module 812 may be usedto transcode the content from a first type of encoding to a second typeof encoding. A shaping and conditioning module 814 may shape andcondition the content electronically to meet the requirements of areceiving device within the local area network based on but not limitedto the type of receiving device and the type of content. A storing andforwarding module 816 may be a combination of other devices previouslydescribed in FIGS. 4 and 5 , such as the digital video recorder or othertype of memory and a router. An in-home delivery/IP module 820 may alsobe a combination of devices previously described. For example, the layertwo switch 564 may be used for the distribution of content through thesystem to various user devices through the local area network. Thecontent may also be communicated to the client devices through thein-home delivery IP module 820. Screen displays, including playlists orcontent available lists may be provided. It should be noted that thecontent may be changed to an IP protocol which may be sent over a MoCa®format, through Wi-Fi or through an Ethernet connection.

Referring now to FIG. 9 , a gateway device is coupled to a video contentsource such as a satellite source or a cable source in step 910. Thesatellite source and cable source are broadcast sources. However, theymay also be on-demand and pay-per-view sources. The gateway device isalso coupled to a broadband source in step 912. As mentioned in FIG. 8 ,the broadband source and the satellite source may be in communicationwith an aggregation and transformation module 466.

In step 914 content is stored in a digital video recorder or othermemory associated with the gateway device. In step 916 a screen displayis generated that aggregates the content from the satellite source andthe broadband source as well as the content that is stored within thedigital video recorder. By providing content that is available from thebroadband source, satellite source and video recorder, an increasedamount of content is available.

In step 918 a listing request for content menu is received at thegateway device from the user device within the local area network. Instep 920 an identifier for the user device and/or the capabilities ofthe user device is received at the gateway device. In step 922 a localarea network condition is determined. A condition may correspond to theamount of content being communicated through the system. That is, theoverall bandwidth use at the current time may be one condition. Anothercondition of the local area network may be the forecasted amount of use.For example, certain actions may be scheduled to be performed. The typeof traffic may be another condition. Some traffic may have higherpriority than other traffic. For example, the network signals forcurrent streaming video traffic may have a higher priority over dataanalysis communication to a remote site. The resources of the gatewayare reserved in response to the network condition, the gatewayconditions and the request for content. This may be performed by themedia processor sending a request “reservation signal” to the networkprocessor in step 924. The network processor may send a response signal,an acknowledge signal (ACK) or a not acknowledge signal (NAK), dependingupon the real time availability of bandwidth to satisfy the request.After step 924, a response signal is generated by the network processor.In step 928 it is determined whether the response signal is anacknowledge signal (ACK). When the response signal is a not acknowledgesignal (NAK), step 930 adjusts the media type delivered to lower thebandwidth.

Referring back to step 928, when the response signal is an acknowledgesignal (ACK), step 932 allocates or reserves the gateway resources. Forexample, bandwidth may be reserved at the gateway device as an allocatedresource for communicating the requested content based upon thecondition. As mentioned above, various conditions may allow forincreased or decreased bandwidth allocation for a particular piece ofcontent. The reservation of bandwidth may be immediate or for futurebandwidth. Other allocated or reserved resources include hardwarequeues, software queues, runtime memory, ingress/egress bufferresources, hardware accelerator processing queues and CPU timeslices.After steps 930 and 932, step 934 shapes and conditions thecommunication of the content at the gateway device. The conditioning maybe done based on the content type. For example, movie content may beconditioned differently than internet news updates. The amount ofbandwidth used by content may be allocated. However, when bandwidthbecomes available, content bandwidth allocations may be increased forother content. The content may also be shaped. Shaping the content meanschanging or restricting some flow signals through the gateway devicewhile allowing other flow signals to maintain maximum speed.

In step 936 the content may be converted into an IP protocol. In step938 the content in the IP protocol is communicated through the localarea network to the requesting device. The content may be stored ordisplayed at the requesting device in step 940.

Referring now to FIG. 10 , the request for content or service throughthe local area network may be formatted in a particular format. Arequest message 1010 may include an originator ID 1012 that correspondsto a unique identifier for the user device. A time stamp 1014 may alsobe provided within the service request message. The time stamp maycorrespond to the time that the message was communicated. A message type1016 may also be included within the service request message 1010. Themessage type may include various types of messages including a requestfor content from the satellite device, a request for content from thebrowser, a request for information or other types of requests. Theservice request message may also include a message 1018 that includesvarious data that triggers a response at the gateway device. Forexample, a request for content may include a content identifier withinthe message 1018.

Referring now to FIG. 11 , a block diagrammatic view of the layer twoswitch or router in relation to the media processor module 510 is setforth. The router 546 is in communication with TR-069 module 1110 and anXMPP module 1112. The TR-069 module 1110 defines an application layerprotocol for remote management of end user devices. The TR-069 module1110 provides communication between the router and various configurationservers. The XMPP module 1112 is an extensible markup language forcommunications protocol that is message-oriented. It is used for varioustypes of signaling and the like. The TR-069 module 1110 and the XMPPmodule 1112 represent communication to various devices outside of thegateway device 22 through the wide area network 50. The router 546communicates to external devices using a remote interface handler module1120.

The router 546 communicates to the media processor 410A through a localinterface handler module 1122. The local interface handler module 1122communicates through a shared interface module such as a sharedmemory/local IPC module 1124. The shared memory may be one of the typesof memories described above relative to FIG. 4 or 5 . The sharedmemory/local IPC module 1124 represents a shared communication channelbetween the router module 546 and the media processor module 410A.

The router 546 also includes a gateway abstraction module 1126. Thegateway abstraction module 1126 is used for abstracting signals that arecommunicated through the remote interface handler module 1120 and thelocal interface handler module 1122. The gateway abstraction module 1126is in communication with the router control plane 1130. The routercontrol plane 1130 is in communication with the router data plane 1132.The gateway abstraction module 1126 is also in communication with asystem management module 1134. The system management module is incommunication with a configuration interface 1136.

The router control plane 1130 includes a protocolserializer/deserializer module 1140 and a validation module 1142. Theprotocol serializer/deserializer module 1140 deserializes the controlsignals from the gateway abstraction module 1126 in route to the routerdata plane 1132. The protocol serializer/deserializer module 1140serializes the signals from the router data plane en route to thegateway abstraction module 1126.

The system management module 1134 and the configuration interface module1136 are used for managing the gateway abstraction module 1126 andcontrolling the routing of signals to the remote interface handlermodule 1120 or the local interface handler module 1122.

The media processor 410A may include DVR modules 1150 and gatewayapplication modules 1152. The DVR modules 1150 store various mediacontent as described above. The DVR modules 1150 may include the DVRitself as well as the control for storing data within the DVR module1150 and retrieving the data for the DVR module 1150.

The application modules 1152 provide various controls or perform variousfunctions for the gateway device 22. Various types of applicationmodules 1152 may be provided depending upon the functions desired in thegateway device 22. Applications may be used to provide information tothe gateway device 22 or may be used to obtain information from thegateway device 22.

A gateway local interface 1154 communicates between the sharedmemory/local IPC module 1124 and the DVR modules 1150 and theapplication modules 1152. In general, the DVR modules 1150 and theapplication modules 1152 request various services such as the creationof quality of service flows using a quality of service flow signal,teardown of quality of service flows, dynamic session creation andsession deletion signals, removal of firewall entities for certainprotocols, query for internet connectivity, providing TR-069 data to therouter 546 for consolidation, varying router/networking parameters,providing notification to the router 546 of DLNA/streaming events(creation and deletion of streams) and providing notification to therouter of RVU session and creation/deletion. The service request signalsmay have a timestamp for bookkeeping purposes.

The shared memory/local IPC module 1124 receives serializedcommunication signals from the protocol serializer/deserializer module1140 by way of the local interface handler/module 1122. The gatewaylocal interface 1154 communicates serialized signals from the DVRmodules 1150 and application modules 1152 through the local interfacehandler module 1122, the gateway abstraction module 1126 and the routercontrol plane 1130. In particular, the serialized signals from the mediaprocessor 410A are deserialized at the protocol serializer/deserializermodule 1140.

The gateway local interface 1154 includes a protocolserializer/deserializer module 1156 that serializes and deserializes thecontent between the media processor 410A and the router 546. Asmentioned above, the commands and data from the DVR modules 1150 and theapplication modules 1152 are serialized to form serialized requestsignals for communication to the router module 546. The media processor410A may perform various functions based on the response signals fromthe router. A screen display with data received from the router 546 maybe generated. A pair of IP protocol stacks 1160, 1162 may be bypassedwhen communication signals are exchanged between the media processor410A and the network processor 410B and more specifically the router546, although two IP protocol stacks 1160, 1162 are illustrated.

Referring now to FIG. 12 , a signal flow between the media processor410A and the router 546 are set forth. The application module 1152, inthis example, generates a serialized service request or query 1210 thatis serialized at the protocol serializer/deserializer 1156. In thefollowing example, a service request signal is provided. The servicerequest signal may include an identifier such as an originatoridentifier to uniquely identify the originator of the request. Ofcourse, a query request signal may also be substituted for the servicerequest. The protocol serializer/deserializer 1156 generates aserialized request signal which is a binary request that is communicatedto the local shared memory/IPC module 1124. The local IPC module 1124communicates the content to the local interface handler 1122. Becausethe signal is intended for use within the gateway device 22, the remoteinterface handler 1120 is bypassed. The shared memory/local IPC module1124 transports the serialized binary request signal 1212 through alocal secure shared memory as indicated by the arrow 1214. Step 1216hands off the protocol from the local interface handler 1122 to aprotocol serializer/deserializer module 1140. The protocolserializer/deserializer 1140 deserializes the signal. The validationmodule 1142 may validate the deserialized signal. The deserializedsignal is sent from the validation module 1142 to the gatewayabstraction module 1126 which obtains the desired data. The gatewayabstraction module queries or services requests through interaction withthe underlying router components such as the router data plane 1132.This is represented by the arrow 1222. Ultimately, a response signal1226 is generated at the gateway abstraction module 1126. The gatewayabstraction module 1126 returns the response signal 1226 to the localinterface handler 1122 as represented by the arrow 1228. The responsesignal is then communicated from the local interface handler 1122 to theshared memory/local IPC module 1124 as represented by arrow 1230. Theprotocol deserializer 1156 receives the signal from the local IPC module1124 as represented by arrow 1232. The local protocolserializer/deserializer 1156 deserializes the signal and communicatesthe deserialized signal to the application module 1152 as represented byarrow 1234. As mentioned above, one of the DVR modules 1150 may besubstituted for the application module 1152. Both the DVR modules 1150and application modules 1152 may request data from sources internal orexternal to the gateway device through the router 546. In response tothe response signal a screen display may be generated in the gatewaydevice from the media processor 410A.

As is described above, the router 546 and the media processor 410Aprovide bidirectional communication using a sessionless request-responseprotocol that is serialized into a binary format over the communicationchannel between the two entities of the gateway device 22. By providingbidirectional communication, the information between the router 546 andthe media processor 410A allow better quality of services, since all ofthe communication is controlled within the gateway device 22. Thetransport of the signals is performed using a shared memory whichbypasses an IP protocol stack of the gateway device 22 which allows moreefficient communication. The message is serialized into a compact binaryformat. As mentioned above in FIG. 11 , the time stamp of theorigination allows a recipient device to process the messages in a givenwindow, and thus discarded stale messages outside of the window are notprocessed. The system management module 1134 determines whether thesystems fall outside a pre-established window for processing. Byproviding both a remote interface handler module 1120 and a localinterface handler module 1122, messages may be easily and quicklyprocessed depending upon the desired direction and origin.

The gateway abstraction module may also communicate an asynchronousresponse 1236 to the media processor 410A. The responses may come to themedia processor after a significant delay related to a request andevents that occur.

Referring now to FIG. 13 , the cache module 450 of FIG. 4 is set forthin further detail. The cache module 450 has access to all the packetflows through the gateway device 22. Statistics may be collected for avariety of browsing habits based upon the use of the satellite tuner andfront end as well as non-video or non-satellite, such as web browsing.Ultimately, the cache module 450 may be used for a variety of purposesincluding, but not limited to, the caching of audio, video and web pagesto enhance the user's experience and reduce latency. The cache module450 may also be used to pre-position video advertisements (ads) withinthe gateway device to reduce the wide area network traffic when usingspecific applications. For example, ads may be requested at a mobiledevice when the user is within certain applications. By pre-positioningadvertisement content within the gateway device, the reliance on theinterface with the wide area network is reduced. Further, by providingan improved user profile that includes both web browsing and videocontent use, a more complete user profile is obtained. Further, areduced amount of caching compared to caching everything may beobtained.

The cache module 450 includes a packet engine 1310 that is used toanalyze the packets being exchanged within the gateway device 22. Thepacket engine 1310 monitors the packets leaving and entering the gatewaydevice 22 from the wide area network. The packet engine 1310 alsoreceives satellite television packets to determine the content beingwatched. Local area network packets may also be monitored. The packetengine 1310 provides raw data to an analysis engine 1312.

The analysis engine 1312 may analyze the content and generate a viewertracking log 432A and the browser tracking log 432B. The analysis engine1312 may also be in communication with a user profile generator 1320A or1320B. The user profile generator 1320A may be located external to thegateway device 22 through the WAN. The user profile generator 1320B maybe located within the cache module 450 or another part of the gateway22. The functions of the user profile generator 1320A, 1320B may besimilar and thus referred to as a user profile generator 1320 in thefollowing description. The user profile generator 1320 may generate auser profile based upon the viewer browsing and viewer watchingprofiles. By analyzing the packets into and out of the gateway device22, the user profiles may be generated. User profiles may be generatedin various ways, including storing searches from a web browser, storingsearches within a video streaming service, storing identifiers fromstreaming video services, and storing web page identifiers for browsedweb pages.

User profiles may be generated for individual users or more generallyfor the overall users of the system. The profiles may be time based, asmentioned above. Predetermined time periods may correspond to differentperiods of use, thus different types of content may be browsed ordifferent users may view different types of programming. For example,time periods may be every hour, half hour or a multi-hour time block.

The analysis engine is in communication with a cache engine 1330. Thecache engine 1330 acts upon content that is cached and pre-positionscontent within the gateway device 22. The cache engine 1330 may storecontent within the memory 430 of the gateway device as illustrated inFIG. 4 . The cache engine 1330 may cache web pages. For example, if auser browses FoxNews.com after arriving home between 6 pm and 6:30 pm ona weeknight, the cache engine 1330 may cache the web content just priorto the typical content use time. In another example, a particularwebsite such as an internet mail website may be browsed to. The gatewaydevice 22 may obtain the data from the webmail site and store the datawithin the gateway device 22. The cache engine 1330 may control theobtaining of the cached data based upon user profiles, which in turn arebased upon the viewer tracking log and/or the browser tracking log. Thecached data provides an improved user experience since the data isavailable. The data may be obtained in the background, and the overalluser experience may be improved by instantly providing content and notinterrupting or reducing the speeds of other services to obtain thedata.

The cache engine 1330 may also be used to cache content from thesatellite or other video providing services. By using the viewertracking log and the browser tracking log, the user profile generator1320 may generate a profile that is used by the cache engine to monitorthe programming and store programming within the digital video recorderof the gateway device 22. The cache engine 1330 may also be used forcaching advertisements that are to be displayed during broadcast, duringstored video content playback, or during web browsing. Pop-up windowsand the like may be generated for advertisements that may be populatedby advertisement content stored within the memory of the gateway device.

The analysis engine 1312 may also be in communication with therecommendation module 420 illustrated in FIG. 4 . The recommendationmodule 420 may use the viewer tracking log 432, the browser tracking log432B, the user profile from the user profile generator 1320 and analysisthereof to generate content recommendations for the user.Recommendations may be generated in various ways, including providingposters on a recommendation screen display or providing a simple list ofrecommended content titles. A short description or selector selectionbuttons for obtaining descriptions may also be displayed.Recommendations may be performed by reviewing the program guide data andthe data stored within the digital video recorder of the gateway device22. The content recommendations are tailored to the user of the gatewaydevice 22 through the analysis engine. Relevant data may best beprovided to users regarding recommended video content.

The cache module 450 may also include an in-memory cache 1332. Thein-memory cache 1332 may increase the performance of the gateway byholding frequently-requested data in the memory and therefore reducingthe need for database queries or other queries to obtain the data.

The cache module 450 may also include a secondary disk cache 1336. Thesecondary disk cache 1336 may be used to improve the time it takes toread or write to the digital video recorder (hard disk). A primary diskcache may be included within the digital video recorder. By providing asecondary disk cache 1336, overall system performance may be improved.

The cache module 450 may also include a cleanup module 1338. The cleanupmodule 1338 may perform heuristics based on cleanup of cache contentwhen a maximum amount of content (watermark) is reached.

Referring now to FIG. 14 , a method for generating contentrecommendations is set forth. In step 1410 television content, LANcontent and wide area network (WAN) content are communicated through apacket engine of the gateway device 22. In step 1412, television viewinghistory is stored at the viewer. This may be performed in the viewertracking log. In step 1414 the browser history is recorded at thebrowser tracking log of the gateway device. The browser history may beboth of the wide area network and the local area network. The browsingtracking log and the viewer tracking log may be analyzed in the analysisengine to form a user profile in step 1416. The user profile may bedetermined within the gateway device 22 or may be exported to anexternal profile generator that is communicated to through the wide areanetwork.

In step 1418 the gateway device performs an action in response to theuser profile. In this example, a first action is set forth in steps 1420to 1424. In step 1420 a request signal for content that corresponds tothe user profile is generated. The content may be cached in step 1422.In step 1424 the user may select the content and play back the contentat the gateway device. The content obtained and played back in steps1420-1424 corresponds to video-on-demand content that can be requestedat any time.

Steps 1410 through 1418 may also be used to obtain broadcasted content.Broadcasted content is content that is broadcasted on a predeterminedchannel at a predetermined time. A second example of an action is setforth in steps 1430 to 438. Step 1430 compares program guide data thatcorresponds to broadcasted content to the user profile. In step 1432 arecommendation list may be provided in response to the step ofcomparing. In step 1434 content may be cached that corresponds torecommendations or the user profile. The cached list of content may bedisplayed in step 1436. After step 1436, step 1438 allows the content tobe selected and the content played back. That is, the list of contentmay be displayed at the gateway device or at a requesting user device orclient device. The content selection signal may be generated at theclient or other user device and communicated to the gateway device. Thegateway device may retrieve the content for playback from within thememory of the gateway device. The content may be processed according tothe capabilities of the requesting device. The content may be displayedon a display associated with the requesting device.

Referring now to FIG. 15 , a method for generating a browser profile isset forth. In step 1510 the search terms, website identifiers or otheridentifiers are entered in to a web browser or other wide area networkinterface. In step 1512 content may be viewed on a website through thegateway device. In step 1514 packet flow signals are monitored throughthe gateway device. Step 1516 provides television content to step 1514so that flow signals of television content and content on websites aremonitored. In step 1516 content may be cached according to the userprofiles developed in response to browser activity or television viewingactivity or both. Cached content is stored in the memory of the gatewaydevice in step 1516. Step 1518 communicates the packet data to ananalysis engine which analyzes the data. In step 1520 the analysisengine may communicate the analyzed data to the profile generator. Theprofile generator may be web based or may be gateway device based. Instep 1522 a user profile for the gateway device is generated. In step1524 the user profile is communicated to the recommendations engine. Instep 1526 a screen display may be generated for recommendations thatcomprise a recommendations list. Broadcast content may also berecommended as well as stored content. Broadcast content may also berecommended for future content.

Referring back to step 1522, step 1530 may provide the user profile to acache engine. The cache engine may obtain content such as browsercontent or other video content based upon the user profile in step 1532.Web based video content may also be stored within the gateway device inresponse to the user profile. The web based content may also appear inthe recommendations list.

Referring now to FIG. 16 , a screen display for a web browser 1610 for awebpage “Benssnowcones.com” is illustrated. The web browser 1610 isdisplaying a web page (browser display) for the business Ben's SnowCones. Ben's Snow Cones may also have a cached advertising window 1612.The cached advertising window 1612 may present a cached advertisementthat was prestored by the cache engine. The cached advertising may alsobe related to the subject matter of the website. For example, the cachedadvertising window 1612 may be related to food or food services. Ben'sSnow Cones is a food service related website.

Referring now to FIG. 17 , the cached advertising content may becommunicated in a video signal 1710. The video signal 1710 may includevideo information 1712 and a trigger 1714. The trigger may cause thegateway device 22 to retrieve cached advertisement content from thememory of the gateway device. The cached advertisement is inserted inthe advertisement area 1716 of the video signal that is to be displayedon the display. The video then resumes at 1718 after the advertisementhas played out.

Referring now to FIG. 18 , user interface 1810 having a currentbroadcast portion 1812 entitled “What's On” and a recommended recordingportion 1814. The content in the portion 1814 is content that is eitherfully or partially recorded within the gateway device 22. As mentionedabove in FIG. 4 , the recommended recordings may be stored in a userpartition of the DVR 446 of gateway device 22, a network partition ofthe DVR 446 of gateway device 22 or both. Recording indicators 1816 maybe used to indicate the content is stored in the gateway device 22. Thecontent in the “What's On” portion 1812, as described above, is what iscurrently broadcasting in the present time slot and is recommended bythe recommendation engine. For example, the “What's On” portion 1812displays “ABC Nightly News”, “Sesame Street”, “Mythbusters”, and “StarTrek: The Next Generation”. In the recommended recording portions 1814,“Up All Night”, “Louie”, “Doctor Who” and “Everybody Loves Raymond” isprovided in a sorted content list. It should be noted that therecommended recording portion 1814 may be scrolled using the arrowindicator 1820. A recommendations list may include the “What's On”portion or the recommended recordings, or both.

Referring now to FIG. 19 , a movie recommendation screen display 1910 isillustrated displaying a recommended movie content list or at least partof a list based on the recommendation engine and the user profile. Therecommendation engine may be used for recommending various types ofcontent. “Movies” are only one specific type of content that may beprovided. “Movie content” can easily be replaced with “Sports” or“Television Shows” as the specific type. In this example, a movierecommendations list 1912 is illustrated by using posters illustratingrecommended movies. The list includes “Star Wars-Episode 1”, Star Trek”,“The Matrix”, “Alien” and “Star Wars-Episode 2”.

Referring now to FIG. 20 , a detailed block diagrammatic view of theconnection bus 534 between the media processor 410A and the networkprocessor 410B is set forth. In this example, a high speed connection2010 is in communication with an IP interface 2012 of the mediaprocessor 410A. An IP interface 2014 of the network processor 410B isalso in communication with the high speed connection 2010.

A low speed connection 2020 is also used to connect the media processorand the network processor. The low speed connection 2020 in this examplehas a message buffer line 2022, a first reset line 2024, a second resetline 2026 and an LED control connection 2028. The message buffer line2022 may be an RS-232 serial bus that communicates heartbeat messagesbetween the media processor 410A and the network processor 410B. Theheartbeat messages are communicated from a hardware watchdog module 2030of the media processor 410A. Heartbeat messages from the networkprocessor 410B originate from a hardware watchdog module 2032. Heartbeatsignals may be communicated from the hardware watchdog module 2030 tothe hardware watchdog module 2032 and vice versa. That is, the networkprocessor 410B may monitor the condition of the media processor 410A andthe media processor 410A may monitor the operation of the networkprocessor 410B. The message buffer 2022 in this example provides 100kbps speed therethrough. However, other amounts of data may becommunicated therethrough. Boot time messages may be communicatedthrough the message buffer 2022. However, notifications between theprocessors are the main function. The heartbeat signal communicatedthrough the message buffer 2022 may include, but is not limited to, theCPU load, an interface load data, temperature data for variouscomponents, such as the Wi-Fi chip temperature, the hard disk drivetemperature, the status of the high speed connection 2010, the amountsof memory being used and other desirable processing data. Ultimately,one watchdog module waits to receive a heartbeat signal from the otherwatchdog module. The receiving processor enters a state/state machinetransition that performs certain heuristics before deciding the otherprocessor is in a non-recoverable state. The one processor that is stilloperating may trigger a hardware reset through one of the reset lines2024, 2026.

A reset module 2034 is located within the media processor 410A togenerate the reset signal from the media processor to the networkprocessor 410B. A reset module 2036 communicates a reset module to themedia processor 410A through the reset line 2026. The LED controlconnection 2028 may be used to illuminate LEDs 2038 and 2040 associatedwith the respective media processor 410A and network processor 4106.

Referring now to FIG. 21 , a simplified method for operating the lowspeed connection between the media processor 410A and the networkprocessor 410B is set forth. In step 2110 content is communicatedbetween the network processor 410B and the media processor 410A throughthe high speed connection 2010 as illustrated in FIG. 20 . In step 2112,boot time is communicated between the media processor 410A and thenetwork processor 4106 at boot up time in step 2112. This is performedusing the low speed connection 2020. In particular, the message buffer2022 may be used for communicating the boot time data therethrough.

In step 2114 a first heartbeat signal and a second heartbeat signal aregenerated by the respective media processor 410A and the networkprocessor 410B. The hardware watchdog 2030 generates the first heartbeatsignal at the media processor 410A and the hardware watchdog 2032generates the second heartbeat signal at the network processor 410B. Instep 2116 the first heartbeat signal is communicated from the mediaprocessor to the network processor through the message buffer interface2022. In step 2118 the first heartbeat signal is processed at thenetwork processor. The lack of a heartbeat signal may also be processedat the network processor. That is, the network processor may beexpecting a heartbeat signal after a predetermined amount of time. Instep 2120 it is determined whether the media processor is in anon-recoverable state. If the media processor is not in anon-recoverable state, the system returns to the beginning or to step2114 in step 2122. When the media processor is in a non-recoverablestate in step 2120, a reset signal is generated at the network processorat the reset module 2036 and communicated through the reset line 2026 tothe media processor. The reset signal is communicated in step 2124. Themedia processor 410A is then reset in step 2126.

Referring back to step 2114, after the second heartbeat signal isgenerated step 2130 communicates the second heartbeat signal from thenetwork processor to the media processor through the message bufferinterface 2022. The second heartbeat signal is processed at the mediaprocessor. In step 2134 it is determined whether the network processoris in a non-recoverable state. When the network processor is not in anon-recoverable state, the system returns in step 2136. Returning maymean returning to step 2114 or step 2110, depending on the conditions.In a normal monitoring mode step 2114 is repeated.

In step 2134 when the network process is in a non-recoverable state,step 2136 is performed. In step 2136 a reset signal is communicated tothe network processor from the media processor. In step 2138 the gatewayprocessor is reset.

By providing a hardware reset, the other processor can control the dataand the resetting of the other processor. When one processor fails, theuser is not required to repower, restart or reset the entire gatewaydevice 22.

Referring now to FIG. 22 , a method for gateway multiprocessorcollaboration is set forth for reducing or shaping flows in the gatewaydevice 22. The components in FIG. 5 are also referenced.

The components of interest are the network processor 410B, a first Wi-Fimodule 540A and a second Wi-Fi module 540B. The first Wi-Fi module 540may be referred to as a first communication system or first modem, andthe second Wi-Fi module 540B may be referred to as a secondcommunication system or second modem.

The first Wi-Fi module 540A communicates data to the network processor410B as indicated by the arrow 2210. The data signals may be referred toas first network signals or WAN signals. The second Wi-Fi module 540Bcommunicates data to the network processor 410B as indicated by thearrow 2212. Again, the data signals may be referred to as second networksignals. Various types of data may be communicated to the networkprocessor 410B. Some of the data is intended for the wireless areanetwork module 552. Both of the Wi-Fi modules 540A and 540B may bereferred to as a system-on-chip. Both of the Wi-Fi modules 540A, 540Battempt to buffer packets when system congestion is detected. In thefollowing example, a process for collaborative notification is set forthin which the network processor notifies the first Wi-Fi module 540A andthe second Wi-Fi module 540B so that the conditions may be throttled.Further, a network signal identifier may also be communicated to or fromthe network processor 410B to the first Wi-Fi module 540A. Individualstreams or network signals may be reduced in speed. Thus, certainnetwork signals may be reduced and other network signals not reduced.That is, lower priority network signals may be reduced in speed whilehigh priority network signals may not be reduced in speed. This isreferred to as shaping of a stream or streams. Advantageously, thisallows the Wi-Fi modules to react to the notification rather thantransmitting at a high speed and throttling independently. Performingindependent throttling results in a sawtooth effect where the Wi-Fichips increase speed, then quickly decrease speed, then increase speed.This results in a perceived poor behavior by the users. This behavior isreduced or eliminated.

A second congestion notification request signal 2216 is communicated tothe second Wi-Fi module 540B. The first congestion notification signal2214 and the second congestion notification request signal 2216 aregenerated in view of each other. That is, the network processor 410Bpresents an overall strategy to provide improved system performance.

A first response signal 2220 is received by the network processor 410Bfrom the Wi-Fi module 540A. A second response signal 2222 is received atthe network processor 410B from the second Wi-Fi module 540B. Inresponse to the congestion notification signals, a first data signal2228 is not modified, but a second data signal 2230 from the secondWi-Fi module 540B is reduced. This is illustrated by the thickness ofthe arrow representations of the data signals 2228 and 2230.

By coordinating the individual network signals or streams from differentWi-Fi modules, the network processor 410B can improve the overallperformance of the system during heavy load conditions. The networkprocessor 410B can thus improve the performance through the local areanetwork as well as to the wide area network.

Referring now to FIG. 23 , a detailed method for operating a networkprocessor 410B and Wi-Fi modules 540A and 540B is set forth. In step2310 network signals are communicated between the network processor 410Band a first Wi-Fi module and a second Wi-Fi module. Each Wi-Fi modulemay buffer content in step 2312. That is, each Wi-Fi module may bufferoutput data that is destined for the network processor 410B. However, asmentioned above, individual buffering may not be advantageous to theoverall system performance. Therefore, the present example provides amethod for coordinated control of the Wi-Fi systems using the networkprocessor and the quality of service requirements set forth therein.

In step 2314 a first congestion notification request signal iscommunicated to the first Wi-Fi system with notification data. Asmentioned above, the notification data may limit individual networksignals or streams of a plurality of streams being received from thefirst Wi-Fi module. In response to the notification data, step 2316throttles and shapes lower priority network signals based on thenotification data at the first Wi-Fi module. First modified networksignals are generated and communicated in response to throttling andshaping.

In step 2318 a second congestion notification request signal iscommunicated to the second Wi-Fi module with notification data. In step2320 the second Wi-Fi module has its network signals throttled andshaped based on the notification data.

Throttled and shaped streams are then communicated from the first Wi-Fimodule to the network processor 410B in step 2322.

In step 2324 throttled and shaped network signals are transmitted fromthe second Wi-Fi module to the network processor 410B. Second modifiednetwork signals are generated and communicated in response to throttlingand shaping.

The process may be repeated as the network processor 410B monitors theoverall system streams and the amount of data flowing therethrough.

Referring now to FIG. 24 , the self-learning module 468 of FIG. 4 isillustrated in further detail. The self-learning module 468 may monitorvarious parameters of the gateway device 22. A network traffic monitor2410 monitors network signals, flows or streams through the gatewaydevice 22. The network traffic may include the upstream traffic, thedownstream traffic and the wide area network to local area networktraffic.

A processor usage monitor 2412 may monitor the amount of processorprocessing usage being used at a particular time period.

A local network traffic monitor 2414 is used to monitor local IPtraffic, including LAN to LAN streams and Wi-Fi streams.

A video from satellite source monitor 2416 monitors the video from thesatellite source. The amount of tuners being used and the overallprocessing of the satellite signals may be monitored. In this example, asatellite signal is used. However, if the system is implemented inanother type of system, such as an optical fiber or cable system, thevideo may be monitored from the cable or optical fiber source.

A recordings monitor 2418 monitors the use of recordings. The recordingsmonitor 2418 may monitor the saving or storing of content from varioussources to a digital video recorder. The recordings monitor may alsomonitor the playback of content from the digital video recorder.

A remote control activity monitor 2420 may monitor the activity from aninput 125 as illustrated in FIGS. 2 and 4 . The remote control activitymonitor provides an indication whether the system is being used and howmuch burden is being placed upon the system.

A power save mode monitor 2422 may also be included in the self-learningmodule 468. The power save mode monitor 2422 monitors the activation ofa power save mode of the gateway device 22. The power save mode maycorrespond to a period of inactive use. The activation of the power savemode is inverse to the amount of data retrieved from the other monitors.That is, when the power save mode is activated, there is little or nouse of the gateway device 22.

A trend module 2430 keeps track of various customer behaviors andactivity by monitoring the various monitors 2410 through 2422. The trendmodule 2430 may determine a high water mark, a low water mark and anaverage water mark for each of the monitor parameters. The trend module2430 is in communication with a time slot monitor module 2432. The timeslot monitor may keep track of the activity within certain time slots.Time slots may correspond to a predetermined time period. For example, aday may be broken down into 24 time periods representing 24 hours. Othertime periods may also be used, such as half day or eighths of a day. Aself-healing and diagnostics module 2434 is in communication with thetrend module 2430 and the time slot monitor module 2432. Theself-healing and diagnostics module 2434 is used for self-healing and/ordiagnostics by correcting various operational issues within the gatewaydevice 22. Operational issues within the gateway device may includesystem slowdown due to software code memory leaks, erroneous programmingthat results in system sluggishness over time, inconsistent statemachines, system configuration, coding bugs, etc. that require variousaction or software resets. Other operational issues includenon-terminating processes of the network processor or the mediaprocessor. The self-healing and diagnostics module 2434 may alsodetermine a timing of self-healing or diagnostics by monitoring thevarious times and usage patterns. The times for performing self-healingand diagnostics may change depending upon the usage. Various customersmay have different usage patterns and thus the timing for diagnosticsand self-healing may vary between customers. Diagnostics may initiate ananalysis of the parameters or may result in the communication ofparameters to an analytics module.

Referring now to FIG. 25 , the amount of local traffic, network trafficand video from satellite source traffic is illustrated in a plot having35 time slots. The time slots correspond to a week of time slots. Eachday is therefore broken into 5 time slots in this example. As mentionedabove, various numbers of time slots may be used depending upon thedesired resolution. As can be seen between time periods 3 and 5, most ofthe activity appears to be performed. This would likely be aninopportune time to perform self-healing.

It should be noted that only three parameters are illustrated in FIG. 25. All or more than the parameters set forth in FIG. 24 may be monitoredand plotted. A plot may be provided within the system so that adetermination may be made as to when self-healing or diagnostics shouldbe performed.

Referring now to FIG. 26 , one of the parameters, such as networktraffic is illustrated in a pattern matrix. The network trafficcorresponds to the peak use parameters. However, other parameters mayalso be monitored, such as the low water mark, high water mark oraverage use. Various time slot graphs for all the parameters and all theaverages, low and high water marks, may be determined. By monitoring allthe parameters, a customer usage pattern will be evident. This patternallows a decision to perform self-healing through the self-healing anddiagnostics module 2434 of FIG. 24 .

Referring now to FIG. 27 , a method for performing self-healing is setforth. In step 2710 the gateway device is started. The self-learningmodule 468 is started in step 2712. In step 2714 various parameters,such as those set forth in FIG. 24 , are monitored. In step 2716 varioustrends are monitored and stored by the trend module 2430 and the timeslot monitor 2432 of FIG. 24 . Both the trend information and thecurrent information from the various parameters set forth in FIG. 24 areprovided to step 2718. Step 2718 determines whether or not to allowself-healing. The system may also start diagnostics or self-healing atblock 2720. Block 2720 initiates diagnostic self-healing at step 2718.In step 2718 it is determined whether or not to perform diagnostics orself-healing. If diagnostics are performed, step 2726 performsself-healing or diagnostics. After step 2726, step 2728 is performed.Step 2728 may also be performed after step 2718 and a decision not toallow diagnostics or self-healing is performed. In step 2728 a nextpotential time slot for self-healing or diagnostics is determined. Theprocess set forth in FIGS. 24 through 27 may be performed periodicallyon a regular basis or on an irregular basis.

Referring now to FIG. 28 , a method for applying quality of service(QoS) to communication signals in devices not having deep packetinspection capabilities is set forth. The present example applies to onedevice with deep packet inspection and another device with non-deeppacket inspection.

In this example, a gateway device 22 is the deep packet inspectiondevice and the set top box 38, without deep packet inspection, is setforth. However, those skilled in the art will recognize that thisapplies to various systems outside gateways and set top boxes. Thegateway device 22 may include the router 546 illustrated in FIG. 1 , adynamic host configuration protocol (DHCP) server 2820 and a universalplug and play (UPnP) listener 2822.

The DHCP server 2820 serves clients on the local area network side. ADHCP client module 2821 is used to receive IP addresses from theinternet service provider on the wide area network side.

The router 546 includes a deep packet inspection module 2824. The deeppacket inspection module 2824 may be used to look into communicationspackets passing through the router 546. Various layers may be inspected,for example, layers 2-7. Useful data may be obtained from the inspectedpackets, such as a packet flow type, a device identifier correspondingto where the flow is generated or consumed, the bandwidth needed for theflow and characteristics of the flow. Enhanced services and applicationof quality of service policy to the stream may be performed. The deeppacket inspection process may be performed automatically.

The router 546 may also include a quality of service (QoS) module 2826.The QoS module 2826 applies a quality of service policy to thecommunication signals passing therethrough. Communication signals thatare en route to or from the first device (STB) may have the QoS policyapplied thereto. The second device, using deep packet inspection,identifies the communication signals en route to the first device andapplies the QoS policy because the first device is unable to performdeep packet inspection. For example, a media stream en route to thefirst device may be identified as a media stream and give a higherpriority by applying QoS policy.

The set top box 38 may include a DHCP client 2830, a universal plug andplay broadcaster 2832 and a media generator 2834. The exchange of datathrough a network 2836 is set forth. The set top box 38 is not a deeppacket inspection device.

A routing and forward module 2828 may also be included within thegateway 22. The routing and forwarding module may be used to routecontent based on a routing table to its desired destination. Theforwarding aspect of the forwarding module 2828 allows the gateway 22 toforward content not destined for the gateway system. The forward androuting module 2822 thus also forwards content toward its desireddestination.

Referring now to FIG. 29 , flow identification between a deep packetinspection device and a non-deep packet inspection device is set forthby way of example through the gateway device 22 and the set top box 38illustrated in FIG. 28 . In this example, standard DHCP addressallocation takes place in step 2910. The DHCP steps illustrated in FIG.29 include standard steps including a DHCP discover request signal thatis communicated from the client to the server, a DHCP offer signal thatis generated in response to the DHCP discover request signal from theservice to the DHCP server 2820 to the DHCP client 2830. A DHCP requestis communicated from the DHCP client 2830 to the DHCP server 2820. ADHCP acknowledge signal is communicated from the DHCP server 2820 to theDHCP client 2830. In step 2912, a DHCP signal is communicated with avendor-specific extension (VSE) that encapsulates information about theflow signals between the devices. An IP address and a port identifierdescribing the flow signal may be communicated in the signal illustratedin FIG. 2912 . The DHCP server 2820 applies quality of service rules ofthe quality of service policy to the DHCP signal with thevendor-specific extension in step 2914. The application of quality ofservice rules is performed in the router 546. The router is a peerdevice. The router 546 interprets the DHCP signal with the VSE and mapsthe flow signals to the quality of service policy. Because all devicesare not routers, the two devices perform UPnP broadcasts informing eachother about their flows and the description. In step 2916 a UPnPbroadcast is communicated from the UPnP broadcaster 2832 to the UPnPlistener 2822. The IP address and flow signal descriptions of theconsumer or set top box 38 are provided in the data of the UPnPbroadcast signal. The UPnP listener 2822 of the gateway device 22communicates the UPnP broadcast signal with data to the router wherequality of service flows are determined in step 2918.

In response to the UPnP broadcast signal received at the UPnP listener2822, the UPnP listener 2822 communicates a UPnP acknowledgement signal2920 to the UPnP broadcaster.

After the UPnP acknowledgement in step 2920, the router 546 appliesquality of service treatment to signals exchanged between the router andthe media generator 2834. The signal 2930 represents a modified mediastream by the router whose parameters have been modified so that deeppacket inspection may be performed and the quality of service, typicallynot available at the set top box, is accomplished.

Referring now to FIG. 30 , a detailed method for allowing quality ofservice to be applied to a device not capable of deep packet inspectionis set forth. In step 3010, a first device is booted up. In this case,the first device corresponds to the set top box. In step 3012 abroadcast discover request is generated and communicated to the DHCPserver of the gateway device. In step 3014, a discover request signal isreceived at the second or gateway device. In step 3016 and IP address, aport identifier and a flow signal description for the first device iscommunicated to the second device. That is, the IP address for thesecond device is communicated to the first gateway device. In step 3020the first device, such as the set top box, communicates a DHCP requestsignal with a vendor-specific extension attached thereto to the seconddevice. The vendor specific extension may include an IP address of thefirst device, a communication port for communicating to the first deviceand a flow or communication signal description. The second device, suchas the gateway device, sends an acknowledge signal to the first devicein step 3022. Quality of service policy is applied to the flow signal inthe second device or gateway device. That is, the quality of servicepolicy is applied to the communication signal communicated to the firstdevice through the second device in step 3024.

Because all devices are not routers, a UPnP broadcast signal is alsobroadcasted from the first device to the gateway device (second device).The UPnP broadcast signal has vendor-specific data coupled thereto. Thevendor-specific extension data may be the same data as was communicatedin step 3020. That is, the UPnP broadcast signal may include an IPaddress, a port identifier and a flow or communication signaldescription of the communication signal of the first device in step3026. The UPnP broadcast signal also informs other devices about thecommunication signal description due to the broadcast structure of theUPnP signal. Devices that are hosts as well as routers can see thebroadcast on the subnet. The UPnP broadcast signal is used to map thedata to the communication signals in step 3028. In step 3030 thecommunication signal is identified. A quality of service policy isapplied to the communication signal to form a modified communicationsignal.

In step 3030 modified communication signals destined for the firstdevice are communicated with the router of the second device with anapplied quality of service policy applied thereto. The modified signalsare processed with the second device and a function is performed inresponse to the modified communication signals in step 3034. Thefunction may be displaying the content corresponding to thecommunication signals or displaying a web page.

Referring now to FIG. 31 , a simplified view of the gateway device 22 isillustrated with the media processor 410A and the network processor410B. The gateway device 22 is shown relative to a monitoring module3110. The monitoring module 3110 is shown as an external monitoringmodule. However, the monitoring module 3110 may optionally beimplemented within the network processor 410B of gateway device 22, asindicated by monitoring module 3110′. The monitoring module 3110includes a real time monitor 3112 and an analytics/visualization module3114. The analytics/visualization module 3114 is in communication with adisplay 3116. The real time monitor 3112 may be in communication withthe cloud system function analytics module 74. The cloud analyticsmodule may also have a display 3122.

If the monitoring module 3110 is outside the gateway device, a secureshell (SSH) connection 3130 is used to connect the real time monitor3112 and the media processor 410A. When the monitoring module 3110 isoutside of the gateway device 22, a secure shell connection 3132 isformed between the real time monitor 3112 and the network processor410B. The real time monitor 3112 extracts low level data and stores itin a database 3134. The analytics and visualization module 3114 is incommunication with the database 3134 and provides real timevisualization of multiple parameters at the display 3116. By monitoringvarious parameters, the details of the information and the relation ofthe data may be visualized. In general, the monitoring module 3110 haslow overhead in terms of a memory footprint and processor resourceconsumption does not result or skew the behavior of the gateway device22 during monitoring. A number of network interfaces may be monitored,as well as individual flow or network signals within the gateway device22. The containers and the container process data, and the threadsassociated with the memory, processor and bandwidth connection may alsobe monitored.

The secure shell connections 3130 and 3132 create a single session withthe multiprocessor imbedded system. The low level interfaces of thegateway device 22 are used to collect targeted data. The monitoringmodule 3110 may be used to obtain a one-time collection of data orprovide a repeated collection of data even down to every few seconds. Itshould be noted that the analytics and visualization module 3114generally provides the data to the display 3116 in real time. Analyticsmay also be pushed to the cloud system function analytics module 74 ordisplayed on a display 3122.

Functions monitored by the monitoring module 3110 may include, but arenot limited to, the network processor functions, the media processorfunctions, the Wi-Fi and MoCa® interfacing, the packet processing andDVR communication.

Referring now to FIG. 32 , the operation of the monitoring module 3110relative to the gateway device 22 is set forth. In step 3210, a secureshell (SSH) connection is formed between the real time monitor and themedia processor. An SSH connection may also be formed between the realtime monitor and the network processor if the real time monitor islocated outside the network processor. In step 3212 data about low levelinterfaces is requested by the real time monitor using a request signal.In step 3214 data is communicated from the gateway device 22 to the realtime monitor and ultimately to the database 3134 of the monitoringmodule. In step 3216 the analytic/visualization module is notified ofthe new data within the database 3134. This may be performed with littledelay so data may ultimately be displayed in real time.

In step 3218 a screen display generating a visualization engine withpast data and new data is displayed. By displaying both past data andnew data, trends may be monitored.

In step 3220 data is displayed at a display associated with themonitoring module.

An optional step, step 3222, may be performed in which data iscommunicated to an external analytics module. The analytics module 74may be a cloud based analytics module. Another optional step, step 3224,displays data on a screen associated with the analytics module.

Referring now to FIG. 33 , one example of a system view of the flowsignals through the gateway device displayed by the display associatedwith the monitoring module is set forth. A gateway device 22 is shownwith various input and output signals. FIG. 33 represents a screendisplay illustrated that is used for monitoring the flows. Input/outputdevices 3310 are illustrated at the left side and right side of FIG. 33. The input/output devices 3310 have flow signals that enter or leavethe gateway device 22. The signals enter or leave through interfacedevices 3312. The interface devices 3312 may include, but are notlimited to, the network interface module 540, the LAN module 550 and theWAN module 552 of FIG. 5 . The input/output devices 3310 illustrate theexternal devices to which the gateway device 22 is coupled. For example,various mobile devices and other interface or internet are represented.The interfaces 3312 may be labelled with actual interfaces, such as“LAN2” or may include a MAC address. In an actual example, the linesbetween the interfaces 3312 and the input/output devices 3310 may becolor coded. In this example, the real-time and aggregate bandwidth ofthe flows through the system are indicated by differently shaped lines.Thus, higher bandwidth flows, such as those illustrated at the top ofthe document, are distinguished from lower bandwidth flows through thelower part of the figure. The interface devices 3312 may be virtual orphysical devices. As described above, the interfaces may include WiFi,Ethernet, software, loopback and other virtual interface constructs.

Referring now to FIG. 34 , another example of a screen displayillustrating system views of accelerated and NAT flows through thenetwork processor is set forth. Various devices and the flow signalsassociated therewith are monitored. Input/output devices 3410 areillustrated in communication with the network processor module 512. Theinterface devices 3412 illustrate the interfaces in communication withthe network processor module 512, such as the local area network module550 and wide area network module 552. For example, LAN0, LAN3 and LAN5are illustrated in some of the boxes. WAN0 is also illustrated. On thescreen display, the devices may be selectable so that the actual speedstherethrough may be illustrated, such as those set forth below in FIG.35 . Again, FIG. 35 also illustrates the various interfaces that mayinclude, but are not limited to, WiFi, Ethernet, software, loopback andother virtual interface constructs. The different constructions of theline may correspond to different speeds therethrough.

Referring now to FIG. 35 , a plurality of dials for measuring thebandwidth of various devices visible on a user interface from theanalytical engine is set forth. Four speed displays 3510 are illustratedfor different interfaces. In this example, eth1, eth2, WL1 and WL0 aredisplayed. However, speed displays for other interfaces may be setforth. For example, the loopback interface, coaxial interface, a bridgeinterface, software virtual interface, IPv6 tunnel interface, a chipspecific virtual interface, GigE interface, a WiFi interface, a WANinterface and an Ethernet interface may all be displayed with similardata. The speed displays 3510 may be operator selectable, so thatdifferent speeds through different interfaces may be displayed. Each ofthe displays 3510 may include various packet data, including the receivespeed (Rx), a transmit (Tx), a bits-per-second receiving andtransmitting, errors receiving and transmitting, dropped packetsreceived or transmitted, overruns, collisions and the number of packetsthrough the system.

Referring now to FIG. 36A, a screen display illustrating trended datafrom a near-real time database is set forth. The data illustrated inFIG. 36 corresponds to the CPU usage over time, memory usage over time,disk space used over time, the number of interrupts over time, systemload averages over time, packet drops per interface over time, and chipspecific accelerator packet stats over time. The MAC addresses set forthcorrespond to those that exist in the gateway device. A storage percentmeter 3610 is illustrated showing the amount of storage used. A memoryusage meter 3612 shows the amount of memory used. A CPU usage plot 3614illustrates the amount of CPU usage (processor consumption) over aparticular period of time. A memory usage plot 3616 illustrates anamount of memory used over a selected period of time. In FIG. 36B acurrent data area 3620 illustrates bandwidth consumption by showing thebytes received, the transmitted bytes, the received bit rate, thetransmit bit rate, the received packets, the transmitted packets, thetransmitted and received errors, the received dropped packets, thetransmitted dropped packets and the MAC address of the monitor devices.Of course, various components may be monitored, such as those describedabove in paragraphs FIGS. 35 and 35 .

Those skilled in the art can now appreciate from the foregoingdescription that the broad teachings of the disclosure can beimplemented in a variety of forms. Therefore, while this disclosureincludes particular examples, the true scope of the disclosure shouldnot be so limited since other modifications will become apparent to theskilled practitioner upon a study of the drawings, the specification andthe following claims.

What is claimed is:
 1. A method of controlling a gateway devicecomprising a network processor, a first communication system, and asecond communication system, the method comprising: generating a firstcongestion notification request signal and a second congestionnotification request signal at the network processor to allowcoordinated control of first network signals that are communicatedbetween the first communication system and the network processor and ofsecond network signals that are communicated between the secondcommunication system and the network processor; communicating the firstcongestion notification request signal from the network processor to thefirst communication system; communicating the second congestionnotification request signal from the network processor to the secondcommunication system; modifying the first network signals at the firstcommunication system in response to the first congestion notificationrequest signal to form first modified network signals to allowcoordinated control of the first modified network signals relative tothe first network signals and the second network signals; and receivingthe first modified network signals at the network processor.
 2. Themethod of claim 1, wherein: the first network signals are communicatedbetween the first communication system and the network processor bycommunicating the first network signals between a first networkinterface and the network processor: and the second network signals arecommunicated between the second communication system and the networkprocessor by communicating the second network signals between a secondnetwork interface and the network processor.
 3. The method of claim 1,further comprising buffering the first network signals at the firstcommunication system and buffering the second network signals at thesecond communication system.
 4. The method of claim 1, wherein the firstnetwork signals are communicated between the first communication systemand the network processor by communicating the first network signalsbetween a Wi-Fi system and the network processor.
 5. The method of claim1, wherein the second network signals are communicated between thesecond communication system and the network processor by communicatingthe second network signals between a Wi-Fi system and the networkprocessor.
 6. The method of claim 1, wherein the first network signalsare communicated between the first communication system and the networkprocessor by communicating the first network signals between a modem andthe network processor.
 7. The method of claim 1, wherein the secondnetwork signals are communicated between the second communication systemand the network processor by communicating the second network signalsbetween a modem and the network processor.
 8. The method of claim 1,further comprising throttling or shaping lower priority network signalsat the second communication system in response to the second congestionnotification request signal to form second modified network signals. 9.The method of claim 8, further comprising communicating the secondmodified network signals to a user device.
 10. A gateway devicecomprising: a first communication system; a second communication system;and a network processor in communication with the first communicationsystem and the second communication system; the network processorcommunicating a first congestion notification request signal to thefirst communication system; the network processor communicating a secondcongestion notification request signal to the second communicationsystem; and the first communication system modifying first networksignals, that are communicated between the first communication systemand the network processor, at the first communication system in responseto the first congestion notification request signal to form firstmodified network signals to allow coordinated control of the firstmodified network signals relative to the first network signals andrelative to second network signals, that are communicated between thesecond communication system and the network processor, and to allowreceipt of the first modified network signals at the network processor.11. The gateway device of claim 10, wherein the first communicationsystem comprises a first network interface and the second communicationsystem comprises a second network interface.
 12. The gateway device ofclaim 10, wherein the first communication system comprises a Wi-Fisystem.
 13. The gateway device of claim 10, wherein the firstcommunication system comprises a first modem and the secondcommunication system comprises a second modem.
 14. The gateway device ofclaim 10, wherein the first communication system throttles or shapeslower priority network signals in response to the first congestionnotification request signal to form the first modified network signalsand wherein the network processor communicates the first modifiednetwork signals to a user device.
 15. The gateway device of claim 10,wherein the second communication system throttles or shapes lowerpriority network signals in response to the second congestionnotification request signal to form second modified network signals andwherein the network processor communicates the second modified networksignals to a user device.
 16. A method of controlling a gateway devicecomprising a network processor, a first communication system, and asecond communication system, the method comprising: generating a firstcongestion notification request signal and a second congestionnotification request signal at the network processor to allowcoordinated control of first network signals and of second networksignals, the first network signals being communicated between thenetwork processor and the first communication system and the secondnetwork signals being communicated between the network processor and thesecond communication system; communicating the first congestionnotification request signal from the network processor to the firstcommunication system; communicating the second congestion notificationrequest signal from the network processor to the second communicationsystem; and responsive to the first congestion notification requestsignal, modifying the first network signals at the first communicationsystem, the modifying forming first modified network signals to allowcoordinated control of the first modified network signals relative tothe first network signals and the second network signals.
 17. The methodof claim 16, wherein: the first network signals are communicated betweenthe network processor and the first communication system bycommunicating the first network signals between the network processorand a first network interface; and the second network signals arecommunicated between the network processor and the second communicationsystem by communicating the second network signals between the networkprocessor and a second network interface.
 18. The method of claim 16,further comprising buffering the first network signals at the firstcommunication system, buffering the second network signals at the secondcommunication system, and modifying the second network signals at thesecond communication system in response to the second congestionnotification request signal to form second modified network signals toallow coordinated control of the second modified network signalsrelative to the first network signals and the second network signals.19. The method of claim 16, wherein the first network signals arecommunicated between the network processor and the first communicationsystem by communicating the first network signals between the networkprocessor and a Wi-Fi system.
 20. The method of claim 16, wherein thesecond network signals are communicated between the network processorand the second communication system by communicating the second networksignals between the network processor and a Wi-Fi system.